' GLOBAL array: working with MMBasic V5.0 and 5.04.05 !

' DEMO for the "Passing Arrays" bug
'----------------------------------------------------

Option base 0
Dim integer min=1, max = 1000
Dim string q(max) length 10, qo

For n = min To max
   q(n)=Str$(Rnd()*10000, 6, 2)
   Print n,q(n)
   Next

   Timer= 0
   sCombSort min, max
   tx= Timer/1000

   qo=""
   For n = min To max
     Print "#"n,q(n)
     If q(n)<qo Then Print" error":End
     qo=q(n)
   Next
   Print
   Print tx "sec"
End

'-----------------------------------------------------------------
' Comb Sort for strings v1.02
' an optimized (8/2017 by twofingers@TBS) version of aCombSort for strings.
' It sorts the array S() and needs the number of elements to sort (STop)
' System: MM2/MMBasic 5.04.05
' String array is globaly
'
Sub sCombSort (Start As integer, STop As integer)
Local M As string
Local integer i, h, sw, G=STop
Local Shrink=1.3
Do While G>1 Or Sw
G=G/Shrink-0.1
If Not G Then G=1
i=Start
Sw=0
For h=i+G To STop
If q(i)>q(h)Then
M=q(i):q(i)=q(h):q(h)=M
Sw=1
EndIf
i=i+1
Next
Loop
End Sub                        